<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
</body>
<script>
    /**
     * 修改URL地址
     * 1.可以通过修改 location 对象修改浏览器的地址。首先，最常见的是使用 assign()方法并传入一个URL。
     */
        //assign实例(2s后直接跳转百度首页)
        // setTimeout(()=>{
        //     location.assign('https://www.baidu.com');
        // },2000);
        //这行代码会立即启动导航到新 URL 的操作，同时在浏览器历史记录中增加一条记录。

    /**
     * 2.如果给location.href 或 window.location 设置一个 URL，也会以同一个 URL 值调用 assign()方法。
     * 比如，下面两行代码都会执行与显式调用 assign()一样的操作：
     */
        //location.href，window.location实例。
        // window.location = "https://www.baidu.com";
        // location.href   = "https://www.baidu.com";
        //在这3种修改浏览器地址的方法中，设置 location.href 是最常见的。

    /**
     * 3.修改 location 对象的属性也会修改当前加载的页面。其中，hash、search、hostname、pathname和 port
     *   属性被设置为新值之后都会修改当前 URL。
     */
        //实例
        // 假设当前 URL 为 http://www.wrox.com/WileyCDA/;
        // 把 URL 修改为 http://www.wrox.com/WileyCDA/#section1;
        location.hash = "#section1";
        // 把 URL 修改为 http://www.wrox.com/WileyCDA/?q=javascript;
        location.search = "?q=javascript";
        // 把 URL 修改为 http://www.somewhere.com/WileyCDA/;
        location.hostname = "www.somewhere.com";
        // 把 URL 修改为 http://www.somewhere.com/mydir/;
        location.pathname = "mydir";
        // 把 URL 修改为 http://www.somewhere.com:8080/WileyCDA/;
        location.port = 8080;


        // 除了 hash 之外，只要修改 location 的一个属性，就会导致页面重新加载新 URL。
        // 修改 hash 的值会在浏览器历史中增加一条新记录。在早期的 IE 中，点击“后退”和“前进”按钮不会更新 hash 属性，
        // 只有点击包含散列的 URL 才会更新 hash 的值。

    /**
     * 4.在以前面提到的方式修改 URL 之后，浏览器历史记录中就会增加相应的记录。当用户单击“后退”按钮时，就会导航到前一个页面。
     *   如果不希望增加历史记录，可以使用 replace()方法。这个方法接收一个 URL 参数，但重新加载后不会增加历史记录。调用
     *   replace()之后，用户不能回到前一页。
     */
       setTimeout(() => location.replace("https://www.baidu.com/"), 1000);
       //浏览器加载这个页面 1 秒之后会重定向到 www.wrox.com。此时，“后退”按钮是禁用状态，即不能返回这个示例页面，除非手动输入完整的 URL

    /**
     * 5.reload()，它能重新加载当前显示的页面。调用 reload()而不传参数，页面会以最有效的方式重新加载。
     *   也就是说，如果页面自上次请求以来没有修改过，浏览器可能会从缓存中加载页面。如果想强制从服务器重新加载，
     *   可以像下面这样给 reload()传个 true
     */
       location.reload(); // 重新加载，可能是从缓存加载
       location.reload(true); // 重新加载，从服务器加载
       //脚本中位于 reload()调用之后的代码可能执行也可能不执行，这取决于网络延迟和系统资源等因素。
       //为此，最好把 reload()作为最后一行代码。
</script>
</html>